package shiyl.use.any.helloworld.generic;

import java.util.List;

/**
 * 负载均衡策略
 * @author  shiyl
 */
public class Policy {

    /**
     * 负载均衡，从loader中按照负载均衡策略选出一个ILoader
     * @param loaders
     * @return
     */
    public ILoader selectFirst(List<ILoader> loaders){
        if( null == loaders || loaders.size() == 0 ){
            return null ;
        }
        // 测试，固定返回第一个
        return loaders.get(0);
    }

    /**
     * 演示 范型方法
     * 为了直接返回预期的类型，可以连续. 调用 —— 比起 selectFirst() 不用等号左边定义变量。
     * @param loaders
     * @param <T>
     * @return
     */
    public <T> T selectRandom(List<ILoader<T>> loaders){
        return loaders.get(0).getEndpoint() ;
    }

}
